/**
 *Universidad del Valle de Guatemala
 *Algoritmos y Estructura de datos
 *Seccion 20
 *Autor Rafael Mendez 11171
 *Fecha: 17/07/2012
 * Calculadora.java
 * @author R6M14
 */
 import javax.swing.*;
public class Calculadora {
    public static void main(String [] args ){
        int numero=0;// Creo las variables tipo integer para guardar los numeros
        int suma=0;//y los resultados de cada operacion. 
        int resta=0;
        int multi=0;
        int div=0;
        //Creo mi objeto tipo StackVector<Integer>
        StackVector <Integer> calculadora = new StackVector<Integer>();
        //Solicito el ingrese de las operaciones
        String cadena=JOptionPane.showInputDialog("Ingrese la operacion: ");
        //Por medio del split separo los caracteres conforme al espacion en blanco
        String [] campos = cadena.split("\\s+");
        //Con este for recorro el array donde tengo guardados los caracteres
        for (int i=0;i<campos.length;i++){
            try{
                    //Por medio del try verifico si puedo transformar los caracteres
                    //a enteros, si es posible por medio del metodo push los agredo a la pila
                    numero= Integer.parseInt(campos[i]);
                    calculadora.push(numero);
                    
               }
            //Si no fue posible convertir los caracteres a enteros capturo el error 
            catch(NumberFormatException e){
                //Comparo el caracter que no se convirtio a entero con los cuatro 
                //simbolos disponibles
                if ((campos[i].equals("+"))){
                    //Si el caracter es +, obtengo los valores en la pila con el metodo pop
                    //y lo convierto a String para despues convertirlo a entero y poderlos sumar
                          suma=Integer.parseInt(""+calculadora.pop())+Integer.parseInt(""+calculadora.pop());
                          calculadora.push(suma);
                          System.out.println("La suma es: "+suma);
                    //El resultado de la suma por medio del metodo push lo agrego a la pila y 
                    //muestro en pantalla el resultado de esa suma      
                    }
                if (campos[i].equals("-")){
                    //Si el caracter es -, obtengo los valores en la pila con el metodo pop
                    //y lo convierto a String para despues convertirlo a entero y poderlos restar
                     resta=Integer.parseInt(""+calculadora.pop())-Integer.parseInt(""+calculadora.pop());
                    calculadora.push(resta);
                    System.out.println("La resta es: "+resta);
                    //El resultado de la resta por medio del metodo push lo agrego a la pila y 
                    //muestro en pantalla el resultado de esa resta
                }
                if (campos[i].equals("*")){
                    //Si el caracter es *, obtengo los valores en la pila con el metodo pop
                    //y lo convierto a String para despues convertirlo a entero y poderlos multiplicar
                     multi=Integer.parseInt(""+calculadora.pop())*Integer.parseInt(""+calculadora.pop());
                    calculadora.push(multi);
                    System.out.println("La multiplicacion es: "+multi);
                    //El resultado de la multiplicacion por medio del metodo push lo agrego a la pila y 
                    //muestro en pantalla el resultado de esa multiplicacion
                }
                if (campos[i].equals("/")){
                    //Si el caracter es /, obtengo los valores en la pila con el metodo pop
                    //y lo convierto a String para despues convertirlo a entero y poderlos dividir
                     div=Integer.parseInt(""+calculadora.pop()) / Integer.parseInt(""+calculadora.pop());
                    calculadora.push(div);
                    System.out.println("La division es: "+div);
                    //El resultado de la division por medio del metodo push lo agrego a la pila y 
                    //muestro en pantalla el resultado de esa division
                }
                }
                       
        }
               
    }
    
}
